"""
!/usr/bin/env python
-*- coding: utf-8 -*-
@Author  : MarkJia
@Site    : 
@File    : 23、内置库：日期与时间处理.py
"""

"""
获取当前日期/获取特定时间
datatime 与 timestamp 时间戳互转
datetime 与 str 的互转
应用：
    1、作为日志信息的内容输出
    2、计算某个功能的执行时间
    3、用日期命名一个日志文件的名称
    4、生成随机数（时间是不会重复的）
    
datetime 常用的类：
    datetime (from datetime import datetime)  时间日期相关
    timedelta (from datetime import timedelta)  计算两个时间的时间差
    timezone (from datetime import timezone)   时区相关
"""

# 模块   datatime 是基于底层 time(基于C语言) 的二次封装
# 1、日志里需要时间 2、文件或者字段需要加一个时间戳  3、计算运行时间（end - start）

# 获取当前时间
import datetime

nowtime = datetime.datetime.now()
# 结果为： 2023-10-12 09:41:29.687104
print(nowtime)

# 获取当前天  结果为：12
print(nowtime.day)


# ============ 时间转化 时间戳 ==============
# 转化成时间戳  单位为秒   结果为：1697074889.687104
print(nowtime.timestamp())

# 获取特定时间   结果为：2022-05-05 00:00:00
print(datetime.datetime(2022, 5, 5))


# ============= 字符串 转化 成 时间 =====================
# 将 字符串 转化为 时间格式。    2022-03-08 21:10:15
s = "2022-03-08 21:10:15"
s1 = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(s1)

# 将 时间 转化成 字符串。    结果为：Tue Mar 08 21:10 (一周的第几天，月份，月的第几天)
result = s1.strftime('%a %b %d %H:%M')
print(result)

# 把时间戳转化成时间
mtimestamp = 1654317859.968215

# ==================================
# 将时间戳    ->   成时间
s = datetime.datetime.fromtimestamp(mtimestamp)
print(s)  # 2022-06-04 12:44:19.968215
# 将时间   ->   时间戳
# =================================
print(s.timestamp())  # 1654317859.968215

# 生成一个以时间命名的日式文件，并向日志文件写入日志数据
import datetime


# 时间格式
now = datetime.datetime.now()
# 转化成字符串   结果为：20231012_094945
c_time = now.strftime('%Y%m%d_%H%M%S')
print(c_time)

# 写入日志
logfile = c_time + '.log'
with open(logfile, 'w+', encoding='utf-8') as f:
    # 时间  级别  行号  打印详细信息
    message = f'{now} [info] line:81 this is a log message'
    # 在当前目录新建20231012_094945.log文件   并写入  2023-10-12 09:41:29.694802 [info] line:81 this is a log message
    f.write(message)
